package com.atguigu.gmall.order.biz;

import com.atguigu.gmall.mq.ware.WareStockResultMsg;
import com.atguigu.gmall.order.entity.OrderInfo;
import com.atguigu.gmall.order.vo.OrderConfirmRespVo;
import com.atguigu.gmall.order.vo.OrderSplitReps;
import com.atguigu.gmall.order.vo.OrderSubmitVo;

import java.util.List;

/**
 * @author lhh
 * @ClassName OrderBizService
 * @date 2022 2022/12/22
 */

public interface OrderBizService {
    /**
     * 获取订单确认页数据
     * @return
     */
    OrderConfirmRespVo getConfirmData();

    /**
     * 提交订单
     * @param submitVo
     * @param tradeNo
     * @return
     */
    Long orderSubmit(OrderSubmitVo submitVo, String tradeNo);

    /**
     * 关闭订单
     * @param id
     * @param userId
     */
    void closeOrder(Long id, Long userId);

    /**
     * 修改支付状态已支付
     * @param out_trade_no
     * @param userId
     */
    void payedOrder(String out_trade_no, Long userId);

    /**
     * 修改订单状态 是否出库，有无超卖
     * @param result
     */
    void updateOrderStockStatus(WareStockResultMsg result);

    /**
     * 根据库存系统进行拆单
     * @param orderId
     * @param json
     * @return
     */
    List<OrderSplitReps> orderSplit(Long orderId, String json);

    /**
     * 保存秒杀订单
     * @param info
     * @return
     */
    Long saveSeckillOrder(OrderInfo info);
}
